package com.payment.system.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.payment.common.base.AjaxResult;
import com.payment.system.domain.Acq;
import com.payment.system.domain.AcqBind;
import com.payment.system.domain.PaymentOrder;

/**
 * 通道 服务层
 * 
 * @author payment
 * @date 2019-01-01
 */
public interface IAcqService 
{
	/**
     * 查询通道信息
     * 
     * @param id 通道ID
     * @return 通道信息
     */
	public Acq selectAcqById(String id);
	
	/**
     * 查询通道列表
     * 
     * @param acq 通道信息
     * @return 通道集合
     */
	public List<Acq> selectAcqList(Acq acq);
	
	/**
     * 新增通道
     * 
     * @param acq 通道信息
     * @return 结果
     */
	public AjaxResult insertAcq(Acq acq, String adminUuid);
	
	/**
     * 修改通道
     * 
     * @param acq 通道信息
     * @return 结果
     */
	public int updateAcq(Acq acq);
		
	/**
     * 删除通道信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteAcqByIds(String ids);

	//修改通道状态 启用或禁用
	AjaxResult changeEmployStatus(Acq acq);

	//根据生效状态查询通道集合
	List<Acq> selectAcqListByStatus(String status);

	/**
	 * 获取app断各个功能的通道列表
	 * @param type
	 * @return
	 */
	public List<Acq>  selectAcqListByApp(String type);
	//快捷消费
	public AjaxResult GaungGuQuickPay(JSONObject jsonParam)throws Exception;

	public AjaxResult paymentOut(String merId, BigDecimal txnAmt,String trxSourceIp,String payPwd);

	/**
	 * 查询通道信息
	 *
	 * @param code 通道编码 (公司ID)
	 * @return 通道信息
	 */
	public Acq selectAcqByCode(String code);


	/**
	 *查询信用卡通道绑定中间信息
	 * @param acqId  通道ID
	 * @param bankId 银行ID
	 * @return
	 */
	public AcqBind selectAcqBindByBankIdAndAcqId(String acqId, String bankId);


	public AjaxResult guangGuOut(PaymentOrder order, String merId);
	/**
	 * 无卡套现实现
	 * @param merchanId
	 * @param bankId
	 * @param orderAmount
	 * @param ip
	 * @param region
	 * @param deviceId
	 * @return
	 */
	public AjaxResult quickPay(String merchanId, String bankId, BigDecimal orderAmount, String ip, String region,
			String deviceId);

	/**
	 * 后台查询订单出款
	 * @param order
	 * @param merId
	 * @return
	 */
	 Map<String,String> htguangGuOut(PaymentOrder order, String merId);
	/**
	 * 无卡收款 通道信息
	 * @param orderAmount
	 * @param bankId
	 * @param cvn
	 * @param expdate
	 * @param bankPhone
	 * @param bankAccount
	 * @param idCardNumber
	 * @param bankAccountName
	 * @param bankCode 
	 * @return
	 */
	AjaxResult getAcq(BigDecimal orderAmount, String bankId, String bankAccountName, String idCardNumber, String bankAccount, String bankPhone, String expdate, String cvn);
}
